/**
 * 类名
 */
var U = {};
/**
 * 项目根路径
 */
var app_path = document.location.pathname.substr(0, document.location.pathname.substr(1).indexOf("/") + 1);

/** 引入常用JS和CSS */
document.write("<script language='javascript' src='" + app_path + "/js/jquery.js'></script>");
document.write("<script language='javascript' src='" + app_path + "/js/jquery.form.js'></script>");

/**
 * Ajax请求封装
 * @param url 提交地址; data 参数; callback 回调函数; async 是否异步(默认true)
 */
function ajaxCall(url, data, callback, async) {
	$.ajax({
		async : async == false ? false : true,
		url : app_path + '/' + url,
		data : data,
		type : "POST",
		dataType : "json",
		success : function(_resp) {
			if (U.isEmpty(_resp)) {
				alert("系统繁忙, 请稍后再试...");
				return;
			}
			if (callback) {
				callback(_resp);
			}
		},
		error : function(xhr, _errormsg, _e) {
			if (xhr.status === 0 || xhr.status === 503) {
				alert("网络异常, 请检查网络是否通畅!");
			} else {
				alert("系统繁忙, 请稍后再试...");
			}
		}
	});
}

/**
 * 异步提交表单
 * @param $dom 表单; url 提交地址; callback 回调函数
 */
function ajaxSubmit($dom, url, callback) {
	$dom.ajaxSubmit({
		type : "post",
		url : app_path + '/' + url,
		success : function(_resp) {
			if (U.isEmpty(_resp)) {
				alert("系统繁忙, 请稍后再试...");
				return;
			}
			if (callback) {
				callback(_resp);
			}
		},
		error : function(xhr, _errormsg, _e) {
			if (xhr.status === 0 || xhr.status === 503) {
				alert("网络异常, 请检查网络是否通畅!");
			} else {
				alert("系统繁忙, 请稍后再试...");
			}
		}
	});
}

/**
 * 是否为空
 */
U.isEmpty = function(obj) {
	return obj === undefined || obj == null || obj.length == 0;
}

/**
 * 扩展JS数组功能, 是否包含
 * @param item
 * @returns {Boolean}
 */
Array.prototype.contains = function(item) {
	for (i = 0; i < this.length; i++) {
		if (this[i] == item) {
			return true;
		}
	}
	return false;
};

/**
 * 扩展JS字符串功能, 字符串是否为空
 * @returns
 */
String.prototype.isEmpty = function() {
	return U.isEmpty(this);
};

/**
 * 扩展JS字符串功能, 去除空格
 * @returns
 */
String.prototype.trim = function() {
	return this.replace(/(^\s*)|(\s*$)/g, "");
};

/**
 * 扩展JS字符串功能, 去除左边空格
 * @returns
 */
String.prototype.ltrim = function() {
	return this.replace(/(^\s*)/g, "");
};

/**
 * 扩展JS字符串功能, 去除右边空格
 * @returns
 */
String.prototype.rtrim = function() {
	return this.replace(/(\s*$)/g, "");
};

/**
 * 裁剪字符串
 * @param str 待裁剪字符串
 * @param width 裁剪后的长度, 一个中文占两位
 * @return 裁剪后的字符串
 */
U.cutStr = function(str, width) {
	if (!str) {
		return null;
	}
	if (!width || width == 0) {
		return "";
	}
	var realLen = 0;
	var result = "";
	for ( var i = 0; i < width; i++) {
		if (str.charCodeAt(i) > 127) {
			realLen += 2;
		} else {
			realLen++;
		}
		if (realLen > width || i >= str.length) {
			break;
		}
		result += str.charAt(i);
	}
	return result;
}

/**
 * 字符串超出部分用..代替
 * @param str 待填充字符串
 * @param width 填充后的长度, 一个中文占两位
 * @return 裁剪后的字符串
 */
U.fillStr = function(str, width) {
	if (!str) {
		return null;
	}
	if (!width || width == 0) {
		return "";
	}
	if (width < 2) {
		return "..";
	}
	
	var result = U.cutStr(str, width);
	if (result.length < str.length) {
		result =  U.cutStr(result, width - 2) + "..";
	}
	return result;
}
